package com.itheima.thread.blockingqueue.demo02;

import java.util.concurrent.ArrayBlockingQueue;

/**
 * 该线程的任务类所需要做的事情，就是生产奶，然后将奶存入到阻塞队列中
 */
public class ProducerThread implements Runnable {

    private ArrayBlockingQueue<Box> arrayBlockingQueue ;
    public ProducerThread(ArrayBlockingQueue<Box> arrayBlockingQueue) {     // 这个构造方法的主要作用就是用来接收ArrayBlockingQueue
        this.arrayBlockingQueue = arrayBlockingQueue ;
    }

    // 根据不同的情况去生产不同的奶，这就是标志位
    private int count = 0 ;

    @Override
    public void run() {

        while(true) {

            if(count % 2 == 0) {

                // 生产牛奶
                Box box = new Box() ;
                box.setMilkType("牛奶");
                box.setAmount("5L");


                try {
                    // 把这个box放到阻塞队列中
                    arrayBlockingQueue.put(box);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

            }else {

                // 生产羊奶
                Box box = new Box() ;
                box.setMilkType("羊奶");
                box.setAmount("10L");

                try {
                    // 把这个box放到阻塞队列中
                    arrayBlockingQueue.put(box);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

            }

            // 对标志位变量进行++操作
            count++;

        }

    }

}
